home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / tcclib.exe / PUSHSCR.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-02-07  |  770 b   |  34 lines

  1. #include <alloc.h>
  2. #include <mem.h>
  3. #include <dos.h>
  4. #include "tcclib.h"
  5.  
  6. #define VIDMODE   *(unsigned char far *) 0x00449lu
  7. #define VIDSEGREG (unsigned)((7 == VIDMODE) ? 0xb000 : 0xb800 )
  8. #define buffer PUSHPOPSCREENARRAY[PUSHPOPSCREENPTR]
  9.  
  10. char far *PUSHPOPSCREENARRAY[32];
  11. int       PUSHPOPSCREENPTR = -1;
  12.  
  13. int PushScreen()
  14. {
  15.     if ( ++PUSHPOPSCREENPTR > 15 ) {
  16.         PUSHPOPSCREENPTR--;
  17.         return( -1 );
  18.     }
  19.     if ( ( buffer = (char far *)farmalloc( 4000 ) ) == NULL ) {
  20.         MakeBox( " Out Of Memory " );
  21.         GComm();
  22.         return( -2 );
  23.     }
  24.     movedata( VIDSEGREG, 0, FP_SEG(buffer), FP_OFF(buffer), 4000 );
  25.     return( 0 );
  26. }
  27.  
  28. void PopScreen()
  29. {
  30.     movedata( FP_SEG(buffer), FP_OFF(buffer), VIDSEGREG, 0, 4000 );
  31.     farfree( buffer );
  32.     PUSHPOPSCREENPTR--;
  33. }
  34.